import java.util.Scanner;
public class test {
    public static void main(String[] args){
//        System.out.println(func());
//        System.out.println(add(1,2));
//        double ret=add(1.2,1.2);
//        System.out.println(ret);
//        func3(123);
//        System.out.println(func5(123));
//        System.out.println(func6(40));
//        System.out.println(count);
        hanio(3,'A','B','C');
    }
//递归  自身中又包含自己，将原问题拆成子问题，将子问题解决，原问题就解决了、
//类似数学上的递归公式
//递归要有起始条件   “终止条件”
//有递归公式 就是找规律
    public static int fac(int n){
        if(n==1){
            return 1;
        }
        return n*fac(n-1);
    }

    public static void func3(int n){
        if(n<10){
            System.out.println(n);
            return;
        }
        func3(n/10);
        System.out.println(n%10);
    }
    public static int func4(int n){
        if(n==1){
            return n;
        }
        return n+func4(n-1);
    }
    public static int func5(int n){
        if(n<10){
            return n;
        }
        else {
            return n%10+func5(n/10);
        }
    }
    public static int count=0;
    public static int func6(int n){
        if(n==1||n==2) {
            count++;
            return 1;
        }else {
            return func6(n-2)+func6(n-1);
        }
    }
    public static int func7(int n){
        if(n==1||n==2){
            return 1;
        }
        int f1=1;
        int f2=1;
        int f3=2;
        for (int i = 3; i <=n ; i++) {
            f3=f1+f2;
            f1=f2;
            f2=f3;
        }
        return f3;
    }
//汉诺塔问题
    public static void move(char pos1,char pos2){
        System.out.print(pos1+"-->"+pos2+" ");
    }
    public static void hanio(int n,char pos1,char pos2,char pos3){
        if(n==1){
            move(pos1,pos3);
        }else{
            hanio(n-1,pos1,pos3,pos2);
            move(pos1,pos3);
            hanio(n-1,pos2,pos1,pos3);
        }
    }






    //方法的重载 overload    方法名相同，参数列表不同（类型，顺序，数量）
//返回值类型无关
    public static double add(double a,double b){
        return a+b;
    }
    public static int add(int a,int b){
        return a+b;
    }

    public static void func2(int n){
        while(n!=0){
        }
    }
    public static void login(){
        int count=3;
        Scanner in =new Scanner(System.in);
        while(count!=0){

        }
    }
    public static double func(){
        double sum=0.0;
        int flg=1;
        for(int i=1;i<100;i++){
            sum+=1.0/i*flg;
            flg=-flg;
        }
        return sum;
    }
}
